<?php
/**
 * Created by PhpStorm.
 * User: samsung
 * Date: 2018/8/13
 * Time: 9:46
 */

namespace app\index\controller;

use think\Controller;
//use app\validate\User;
use app\facade\User;  //静态马甲方式

use think\facade\Validate;
class Demo9 extends Controller
{
    //验证器,使用的是validate类中的rule属性
    public function test1(){
        $data = [
            'name' => 'zhanghu',
            'email' => 'zhanghu@163.com',
            'password' => 'allen0521',
            'telphone' => '15068972132',
        ];

       // $validate = new User();
//       if(!$validate->check($data)){
//           return $validate->getError();
//       }
//       return '验证通过！';

        //静态马甲方式,静态代理方式
        if(!User::check($data)){
            return User::getError();
        }
        return '验证通过！';
    }

//    只用控制器中的validate的类进行验证，使用用户自定义的验证器/类

    public function test2(){
//        $this->validate();返回验证结果  要验证的数据
        $data = [
            'name' => 'zhanghu',
            'email' => 'zhanghu@163.com',
            'password' => 'allen0521',
            'telphone' => '15068972132',
        ];

        $validate = '\app\validate\User';

        $res = $this->validate($data,$validate);
        if(true !== $res){
            return $res;
        }
        return '验证通过！';
    }
    //验证器它是一个自定义的类，必须继承于框架的验证类think\Validate.php
    //验证器可以创建在应用application目录下的任何一个可以访问的目录下面，这个访问时指控制器可以访问，不是指外部的url可以访问
    //只需要制定正确的命名空间就可以了
    //验证器其实就是完成框架的think\Validate类中的属性 protected $rule = [] 初始化
    //在控制器中直接实例化，调用check()方法,完成验证
    //还可以自定义的静态代理，来统一验证方法的调用方式


    //独立验证，使用的是验证器类的 think\Validate中的rule()方法
    //rule()方法其实是完成当前类的 protected rule = []的初始化
    //独立就是不依赖,不依赖于用户自定义的验证器类
    public function test3(){
        //校验的数据
        $data = [
            'name' => 'zhanghu',
            'email' => 'zhanghu@163.com',
            'password' => 'allen0521',
            'telphone' => '15068972132',
        ];
        //规则初始化
        $rule = [
            'name|姓名' => [ //字段|别名 ,验证出错的时候前台显示别名字符
                'require', //必须填写
                'min'=>5, //最小字数
                'max'=>20, //最大字数
            ],

            'email' => [
                'require',
                'email'=>'email',
            ],

            'password' => [
                'require',
                'min'=>3,
                'max'=>12,
                'alphaNum',//仅允许字母加数字
            ],

            'telphone' => [
                'require',
                'mobile',
            ]
        ];
        //规则初始化
        Validate::rule($rule);
        //要校验的数据
        //进行判断,如何不通过出现错误信息
        if(!Validate::check($data)){
            return Validate::getError();
        };
        return '验证通过3！';
    }


}
